package com.d3works.apps.project.service;

import com.d3works.apps.project.db.TaskTemplate;
import java.util.Set;

public class TaskTemplateServiceImpl implements TaskTemplateService {

  @Override
  public Set<TaskTemplate> getParentTaskTemplateFromTaskTemplate(
      TaskTemplate taskTemplate, Set<TaskTemplate> taskTemplateSet) {
    if (taskTemplate == null || taskTemplateSet.contains(taskTemplate)) {
      return taskTemplateSet;
    }
    taskTemplateSet.add(taskTemplate);
    taskTemplateSet.addAll(
        this.getParentTaskTemplateFromTaskTemplate(
            taskTemplate.getParentTaskTemplate(), taskTemplateSet));
    return taskTemplateSet;
  }

  @Override
  public boolean isParentTaskTemplateCreatedLoop(
      TaskTemplate taskTemplate, TaskTemplate parentTaskTemplate) {

    if (parentTaskTemplate == null) {
      return false;
    } else if (taskTemplate.equals(parentTaskTemplate)) {
      return true;
    }
    return isParentTaskTemplateCreatedLoop(
        taskTemplate, parentTaskTemplate.getParentTaskTemplate());
  }
}
